package com.sugar.real.estate.module.business.controller.admin.apartment.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.List;

@Schema(description = "管理后台 - 楼盘/公寓新增/修改 Request VO")
@Data
public class ApartmentSaveReqVO {

    @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "19864")
    private Long id;

    @Schema(description = "房屋中文名", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "房屋中文名不能为空")
    private String nameZhCn;

    @Schema(description = "房屋英文名", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "房屋英文名不能为空")
    private String nameEnUs;

    @Schema(description = "房屋图片（多个逗号分隔）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "房屋图片不能为空")
    @Size(min = 1, message = "房屋图片不能为空")
    private List<String> showImages;

    @Schema(description = "房屋视频（多个逗号分隔）", requiredMode = Schema.RequiredMode.REQUIRED)
    /*@NotEmpty(message = "房屋视频不能为空")*/
    private List<String> showVideos;

    /*@Schema(description = "主力户型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotEmpty(message = "主力户型不能为空")
    private String mainHouseType;*/

    /**
     * 主力户型中文
     */
    @NotEmpty(message = "主力户型中文不能为空")
    private String mainHouseTypeZhCn;
    /**
     * 主力户型英文
     */
    @NotEmpty(message = "主力户型英文不能为空")
    private String mainHouseTypeEnUs;

    @Schema(description = "最小价格（单位：元）")
    private BigDecimal priceMin;

    @Schema(description = "最大价格（单位：元）")
    private BigDecimal priceMax;

    @Schema(description = "中文标签（多个逗号分隔）", requiredMode = Schema.RequiredMode.REQUIRED)
    /*@NotNull(message = "中文标签不能为空")
    @Size(min = 1, message = "中文标签不能为空")*/
    private List<String> tagsZhCn;

    @Schema(description = "英文标签（多个逗号分隔）", requiredMode = Schema.RequiredMode.REQUIRED)
    /*@NotNull(message = "英文标签不能为空")
    @Size(min = 1, message = "英文标签不能为空")*/
    private List<String> tagsEnUs;

    @Schema(description = "中文亮点（多个逗号分隔）", requiredMode = Schema.RequiredMode.REQUIRED)
    private List<String> projectLightZhCn;

    @Schema(description = "英文亮点（多个逗号分隔）", requiredMode = Schema.RequiredMode.REQUIRED)
    private List<String> projectLightEnUs;

    @Schema(description = "项目类型（字典：2）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotEmpty(message = "项目类型不能为空")
    private String projectType;

    @Schema(description = "项目进度（中文）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "项目进度（中文）不能为空")
    private String projectProgressZhCn;

    @Schema(description = "项目进度（英文）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "项目进度（英文）不能为空")
    private String projectProgressEnUs;

    @Schema(description = "完工时间", requiredMode = Schema.RequiredMode.REQUIRED)
    //@NotNull(message = "完工时间不能为空")
    private LocalDate completionTime;

    @Schema(description = "建筑商中文名", requiredMode = Schema.RequiredMode.REQUIRED)
    //@NotEmpty(message = "建筑商中文名不能为空")
    private String builderZhCn;

    @Schema(description = "建筑商英文名", requiredMode = Schema.RequiredMode.REQUIRED)
    //@NotEmpty(message = "建筑商英文名不能为空")
    private String builderEnUs;

    @Schema(description = "设计师中文名", requiredMode = Schema.RequiredMode.REQUIRED)
    //@NotEmpty(message = "设计师中文名不能为空")
    private String designerZhCn;

    @Schema(description = "设计师英文名", requiredMode = Schema.RequiredMode.REQUIRED)
    //@NotEmpty(message = "设计师英文名不能为空")
    private String designerEnUs;

    @Schema(description = "内容中文详情", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "内容中文详情不能为空")
    private String contentZhCn;

    @Schema(description = "内容英文详情", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "内容英文详情不能为空")
    private String contentEnUs;

    @Schema(description = "所属省份ID", example = "28443")
    private Long provinceId;

    @Schema(description = "所属市ID", example = "17702")
    private Long cityId;

    @Schema(description = "所属区县ID", example = "1985")
    private Long countyId;

    @Schema(description = "省市区", requiredMode = Schema.RequiredMode.REQUIRED)
    private String[] location;

    @Schema(description = "省市区Ids", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long[] locationIds;

    @Schema(description = "坐标点（经纬度逗号分隔）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "坐标点不能为空")
    private String point;

    @Schema(description = "定位详情", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "定位详情不能为空")
    private String pointDetail;

    @Schema(description = "热门推荐", requiredMode = Schema.RequiredMode.REQUIRED)
    private Boolean isHot;

    @Schema(description = "最新楼盘", requiredMode = Schema.RequiredMode.REQUIRED)
    private Boolean isLatest;

    @Schema(description = "关联的资讯ID", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long[] infoIds;

    @Schema(description = "上下架（0下架 1上架）", requiredMode = Schema.RequiredMode.REQUIRED)
    private Boolean isShow;

    @Schema(description = "参考总价", requiredMode = Schema.RequiredMode.REQUIRED)
    private String totalAmount;

}